#!/usr/bin/python3
# -*- coding: UTF-8 -*-

# Python内置的一种数据类型是列表：list。list是一种有序的集合，可以随时添加和删除其中的元素
classmates = ['Jack', 'Tom', 'Tony']
print(classmates)

# 用len()函数可以获得list元素的个数
print(len(classmates))

# 用索引来访问list中每一个位置的元素，记得索引是从0开始的,记得最后一个元素的索引是len(classmates) - 1
print(classmates[1])

# 如果要取最后一个元素，除了计算索引位置外，还可以用-1做索引，直接获取最后一个元素
print(classmates[-1])
# 获取倒数第2个、倒数第3个 classmates[-2] classmates[-3]
print(classmates[-2])

# list是一个可变的有序表，所以，可以往list中追加元素到末尾
classmates.append('Jrey')
print(classmates)

# 也可以把元素插入到指定的位置，比如索引号为1的位置
classmates.insert(1, 'James')
print(classmates)
classmates.insert(11, 'King')
print("===>" , classmates)

# 要删除list末尾的元素，用pop()方法
classmates.pop()
print(classmates)

# 要删除指定位置的元素，用pop(i)方法，其中i是索引位置
classmates.pop(0)
print(classmates)

# 要把某个元素替换成别的元素，可以直接赋值给对应的索引位置
classmates[1] = 'Dave'
print(classmates)

# list里面的元素的数据类型也可以不同
L = ['Apple', 666, True]
print(L)

# list元素也可以是另一个list
PL = ['python', 'JAVA', ['MySQL', 'ORACLE']]
print(len(PL))
print(PL[2][1])

# 如果一个list中一个元素也没有，就是一个空的list，它的长度为0
E = []
print(len(E))


#  另一种有序列表叫元组：tuple。tuple和list非常类似，但是tuple一旦初始化就不能修改
# 不可变的tuple有什么意义？因为tuple不可变，所以代码更安全。如果可能，能用tuple代替list就尽量用tuple。
# tuple的陷阱：当你定义一个tuple时，在定义的时候，tuple的元素就必须被确定下来
classmates = ('Michael', 'Bob', 'Tracy')

# 练习
LX = [
    ['Apple', 'Google', 'Microsoft'],
    ['Java', 'Python', 'Ruby', 'PHP'],
    ['Adam', 'Bart', 'Lisa']
]
print('=======================')
# 打印Apple:
print(LX[0][0])
# 打印Python:
print(LX[1][1])
# 打印Lisa:
print(LX[2][2])




